Linear to physical address translation with support for page attributes

ABSTRACT

Embodiments of the invention are generally directed to systems, methods, and apparatuses for linear to physical address translation with support for page attributes. In some embodiments, a system receives an instruction to translate a memory pointer to a physical memory address for a memory location. The system may return the physical memory address and one or more page attributes. Other embodiments are described and claimed.

TECHNICAL FIELD

Embodiments of the invention generally relate to the field of computingsystems and, more particularly, to systems, methods and apparatuses forvirtual address to physical address translation with support for pageattributes.

BACKGROUND

Virtual memory allows programmers to use a larger range of memory forprograms and data than is provided by the actual physical memoryavailable to a processor. In addition virtual memory allows programs tobe loaded in parallel to one another with a memory map that is impassiveto the presence of other programs and the location to which it isloaded. A computing system maps a program's virtual addresses (alsoknown as a Linear Address in the IA32 architecture—in this description‘linear address’ or LA is used synonymously with ‘virtual address’) toreal hardware storage addresses (e.g., physical memory addresses) usingaddress translation hardware. The hardware uses a tree of tables inmemory as the input data for the address translation. The root of thetree is pointed to by a register that holds the physical address of thefirst table in the page table tree. An example of such a register is CR3in the IA32 architecture. Page table entries (PTEs) are addressed usinga base and an index. The base is taken from a register or a previoustable memory pointer. The index is using a portion of the linearaddress. The PTE includes either the page, if the rest of the sub treeis not present in memory, or a memory pointer and other information tobe discussed below. The memory pointer is for a page in memory that mayeither include data (that belongs to the application or the operatingsystem) or another level of the page-table. If it is the later case,another portion of the linear address is used to index into the table ina scheme similar to what is described. If the address is for anapplication page, the physical address is constructed by adding theremaining bits of the address (that were not used for indexing) to thepage base address that was retrieved from the page table entry. Also,some embodiments may instantiate several translation schemes (e.g.,different table tree indexing structures) as described in a register,for the sake of simplifying this description we will consider suchinformation part of the CR3 register, even though it may be kept in oneor more other registers.

Beyond the address translation information, these tables includeinformation such as access rights read, write or execute, presence ofthe data in memory, caching policy indications, page modified state,etc. In some cases, a page table may include pages of different sizes,where larger pages are pointed to in a lower level of the page tabletree (instead of pointing to another page of pointers) The size of thepage pointed to is stored as an attribute in the page table tree(typically in the level that points to the data page).

To retrieve the physical address, the page-table entries are read in arecursive manner starting from the root (CR3 in IA32) and properties ofthe page are retrieved and merged. The IA32 Programmers' ReferenceManual (e.g., Volume 3A) provides an example of a conventional approachto retrieving physical addresses. This process requires several memoryaccess operations and is implemented by Page-Table Handling hardware oruCode sequences.

Occasionally, software is required to retrieve the physical memoryaddress. In such cases either an emulated full table walk or a shortenedheuristic that is based on the limitations of the setup of the tablethat the operating system imposes are used.

A translation look aside buffer (TLB) is a cache that holds the resultof previous translations such that successive accesses to an address (ora range of addresses) may avoid walking the data structure and can usethe results of a previous translation. In many cases the addresstranslation also checks for the operation to meet the conditions set forthe memory location. Conventional address translation instructionstypically return a physical memory address for a linear address providedas an operand without providing any additional information.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the invention are illustrated by way of example, and notby way of limitation, in the figures of the accompanying drawings inwhich like reference numerals refer to similar elements.

FIG. 1 is a high-level block diagram illustrating selected aspects of acomputing system implemented according to an embodiment of theinvention.

FIG. 2 is a block diagram illustrating selected aspects of addresstranslation hardware, according to an embodiment of the invention.

FIG. 3 is a block diagram illustrating selected aspects of a page treehaving extended page tables according to an embodiment of the invention.

FIG. 4 is a block diagram illustrating selected aspects of a page tableentry according to an embodiment of the invention.

FIG. 5 is a flow diagram illustrating selected aspects of a method forlinear to physical address translation with support for page attributesaccording to an embodiment of the invention.

DETAILED DESCRIPTION

Embodiments of the invention are generally directed to systems, methods,and apparatuses for a virtual (to be referred to as linear) to physicaladdress translation with support for page attributes. In someembodiments, a system receives an instruction to translate a linearmemory pointer to a physical memory address for a memory location. Thesystem may return the physical memory address and one or more pageattributes.

FIG. 1 is a high-level block diagram illustrating selected aspects of acomputing system implemented according to an embodiment of theinvention. System 100 includes applications 102, kernel 104, andhardware 106. Kernel 104 manages hardware 106 and provides communicationbetween applications 102 and hardware 106. To provide fault toleranceand security, kernel 104 may operate at a higher privilege level (e.g.,ring 0) than applications 102. In some embodiments, kernel 104 includesLOAD PHYSICAL ADDRESS instruction (LPA) 108. The input parameters forLPA 108 may include nearly any pointer to memory. The output parametersof LPA 108 include a physical memory address (PA) corresponding to thepointer and one or more page attributes. As is further described belowwith reference to FIGS. 2-5, LPA 108 may support touch operations and/orvirtualization technology.

Table 1 illustrates selected aspects of an LPAxx instruction accordingto some embodiments of the invention. In some embodiments, the LPAxxinstruction takes, as an input, a linear address (e.g., m8) and outputsthe physical address of that memory location as well as one or more pageattributes. In 32-bit modes and in cases were the physical address maybe larger than the register, the instruction may have 2 registers forthe address output (to support a larger than 32-bit physical addressspace). In 64-bit modes, a single output register may suffice. In someembodiments, the basic structure of the instruction supports readsemantics. Write semantics may be supported to directly check whether apage is write-enabled (e.g., see the trap discussion below).

TABLE 1 Compatibility/Leg Instruction 64-Bit Mode Mode Operation LPAValid Valid Translate address and return attributes LPARD 32-bit regsValid Valid Translate address, LPARD 64-bit regs Valid N.E. returnattributes and touch as read LPAWR 32-bit regs Valid Valid Translateaddress, LPAWR 64-bit regs Valid N.E. return attributes and touch aswrite N.E.—instruction not encoded in this mode

In some embodiments, when operating in a legacy mode, the LPAxxinstruction moves the address of the byte address in DS:(E)SI toEDX:EAX, and EBX holds the access permissions and page size. In 64-bitmode, the LPAxx may move the address of the byte address in (RIE)SI toEDX:EAX (or r64 register), and EBX holds the access permissions and pagesize. In alternative embodiments, different registers may be used anddifferent modes may be supported.

In some embodiments, the LPAxx instruction is a protected instructionthat is run, for example, at the kernel level. Running the instructionat the application level can lead to a violation of the user-applicationvirtualization effect (e.g., a user application is not aware of theactual address at which it is running). In some embodiments, the LPAxxinstruction operates in synchronous operating system calls in which thekernel code operates with the user context (in IA32 mode this refers toa specific CR3 value). In alternative embodiments (as is furtherdescribed below), the instruction operates in asynchronous operatingsystem (OS) calls. In some embodiments, the use of LPAxx is similar tothe equivalent SW operations that are present in the operating system,to ensure that the resulting physical address is synchronized with thepage table.

The input parameters may be nearly any valid way of pointing to memory.For example, an m8 value or an r/m8 value may be alternatively used togive the instruction more flexibility in specifying the linear address.The address translation hardware (e.g., system 200, shown in FIG. 2) mayperform the address translation operations as if a read (or write) isrequired for the instruction, with a different result being returned.The address information in a translation look aside buffer (e.g., TLB204, shown in FIG. 2) may be used directly without going through a pagewalk phase.

In some embodiments, the output parameter is a physical address (PA)(e.g., up to 64-bits in length) and one or more page attributes (e.g.,one or more of the attributes shown in table 2). The PA may be stored ina single 64-bit register (e.g., when operating in the IA32e mode) or inan implicitly defined register pair (e.g., when operating in the IA32mode or, optionally, in the IA32e compatible mode). The one or more pageattributes may be stored in an implicitly defined register. In alternateembodiments, other means for making the data available to software forlater use are used such as storing the information in a dedicatedregister(s) or in a memory location.

As shown in Table 1, in some embodiments, there may be two (or more)types of LPAxx instructions. For example, some embodiments may includean LPA instruction and an LPA with touch instruction. The LPAinstruction, as described above, receives, as an input, a LA and returnsa PA and one or more page attributes. The LPA with touch instructionalso returns a PA and one or more page attributes. In addition, the LPAwith touch instruction determines whether the page is present in memory(according to the status in the last level of the page table). If thelast page is not present, the LPA with touch instruction produces afault that is the same as the fault produced by a RD or a WR for LPARDand LPAWR, respectively. This allows the standard fault handlers to takecare of the fault case (e.g., bring the page to memory in case of a pagefault or for a write touch to convert a read only page to a writeenabled). The LPA with touch instruction determines the status of a pagewithout accessing the data in memory, which saves an access to thememory hierarchy and in many cases a cache miss. Instead, the statusdetermination is based on the status of the page table entries (PTEs).

FIG. 2 is a block diagram illustrating selected aspects of addresstranslation hardware, according to an embodiment of the invention.Address translation hardware 200 includes memory request unit (MRU) 202,translation look aside buffer (TLB) 204, page miss handler (PMH) 206,memory sub system (MSU) 208, physical address return register (PARR)210, and multiplexer (MUX) 212. In alternative embodiments, addresstranslation hardware 200 includes more elements, fewer elements, and/ordifferent elements.

MRU 202 issues memory requests (e.g., either a load or store) thatinclude a linear address (e.g., linear address 214). TLB 204 is acaching mechanism (which may include multiple layers of TLBs) that holdsthe physical address and attributes of linear addresses that that havealready been translated. Not all previously translated addresses areheld in the TLB and various caching heuristics are applied to determinewhich addresses are kept. When the Page Tables are updated the affectedentries are purged from the TLB either by direct software control(software managed TLB coherency) or by hardware (hardware managed TLBcoherency). If the translation for LA 214 is found in the TLB 204 theTLB outputs the physical memory address (PA) directly. The PA (e.g., PA216) can be used to obtain data directly from MSU 208. If TLB 204 doesnot include the address, then the LA is sent (218) to PMH 206. PMH 206performs a page walk, and if the page walk is successfully completedreturns the PA (220) to TLB 204. When the PMH walk fails (e.g., the datais not present in memory for any level of the page table) an exceptionis generated which yields to the operating system. For LPA operation insome embodiments the operation terminates with status that indicateswhere the fault occurred without generating an exception, more detailson the returned information are provided below. The MSU 208 representsthe memory hierarchy which may consist of directly accessing the memoryor one or more levels of caches used to reduce memory access delays. TheMSU 208 returns the data stored in Physical Address 216 via a return busto a data registers (222).

In some embodiments, in addition to obtaining the PA (from either TLB204 or PMH 206, depending on the case), one or more page attributes areobtained in response to the instruction. The PA and the associated pageattributes are returned as part of the LPA parameters to the processorregisters. In some embodiments, the PA and the associated pageattributes are placed in a physical address return register (e.g., PARR210) which is a register dedicated for the holding of the PA and/orattributes information and a status that indicates the completion of theoperation. Optionally the processor may use microcode to read the datafrom the PARR and place it into a general purpose register. In analternative embodiment, the PARR can be directly addressed by otherprocessor instructions. In another alternative embodiment, the PA andassociated page attributes may be returned to the processor via a readreturn bus (e.g., 224). In yet other embodiments, different techniquesmay be used to return the PA and associated page attributes to theprocessor.

Table 2 provides a list of selected page attributes that may bereturned, with a PA, in some embodiments of the invention. Inalternative embodiments, more attributes, fewer attributes, and/ordifferent attributes may be returned.

TABLE 2 Page Attribute Brief Description Present bit (P-bit) Indicateswhether the page is present in memory. Read/Write bit Indicates whethera page is read-only or if (R/W bit) read/write access is possible.User/Supervisor bit Indicates a protection level for the page. (U/S bit)Access bit (A bit) Indicates whether the page has been accessed. Dirtybit (D bit) Indicates whether the page has been modified. Global flag (Gbit) Indicates that the page is used globally (Global flag). Executedisable bit Indicates that the page is a data page and code (EXB bit)cannot be executed from it. Page size Indicates the size of the pageaccording to the page table structure. For example, the size of the pagemay be 4 KB, 2 MB, 4 MB, etc. Translation page fault Indicates that apage fault occurred during the process of address translation whileaccessing one of the page tables. The value indicates the level of thepage table from the root (e.g., as pointed to by the CR3 register or anyother suitable register). The presence of the page itself is indicatedby the P-bit. When the page translation is stored in the TLB, thepage-table tree presence checking may be waved.

For most cases, the exceptions are handled in substantially the same wayas they are for a normal memory access (read or write). In someembodiments, however, the following exceptions apply. If the LPAxx failsto access a data page, the instruction returns an address that is equalto zero and the P-bit is cleared. If the address translation fails toaccess any of the page tables, the “Translation Page Fault” status isset to indicate the fault and the level of the fault. Regarding theLPAxx with touch instruction, the page fault is taken if the access tothe page fails (e.g., generating a page fault exception). In someembodiments, the exception is not taken if the failure is on any of thepage tables' access which is flagged using the “translation Page Fault”status.

In some embodiments, the LPAxx instruction supports virtualizationtechnology (VT) with enhanced page table (EPT). When operating in a VTenvironment, the translation of an address may depend, in part, onwhether the requestor is a guest OS or the host OS (or virtual machinemanager—VMM), as indicated by status bits within the processor. In someembodiments, if the requestor is the host OS, then the LPAxx instructionreturns the host PA (HPA). If, however, the requestor is the guest OS,then the LPAxx instruction may return the guest PA (GPA). FIG. 3 is ablock diagram illustrating selected aspects of address translation in aVT environment, according to an embodiment of the invention.

Page table tree 300 includes extended page tables (EPTs) 302-306. EPTs302-306 are similar to the conventional tables (e.g., 308 and 310),except that EPTs 302-306 belong to the host OS. The EPT uses a tree oftables pointed to by an EPT base register to translate a GPA into a HPA.This operation is performed for any GPA that requires translationincluding access to the guest page tables as part of the guest pagetable walk. A portion of guest LA (GLA) 312 and the CR3 (314) referencea location in EPT 302. EPT 302, in turn, points to a location in pagedirectory 308. Page directory 308 and another portion of GLA 312 may beused to reference a location in EPT 304. This process may be continuedfor nearly any number of levels until GPA 316 is reached. EPT 306 mapsGPA 316 to HPA 318. In some embodiments, when operating in a VTenvironment, the LPAxx instruction returns the GPA of the page itself asstored in the last guest page table (e.g., GPA 316) and one or moreassociated page attributes.

In some embodiments the TLB holds only the HPA, which requires the pagetable to be walked for returning the GPA, as done for the case of a TLBmiss. In alternate embodiments, the TLB includes an additional fieldthat holds the GPA and attributes of the page which enables retrievingthe GPA from the TLB.

FIG. 4 is a block diagram illustrating selected aspects of a page tableentry (PTE) according to an embodiment of the invention. In someembodiments, the output parameters of an LPAxx instruction are obtainedfrom a PTE (e.g., PTE 400) or a similar entry in a TLB (e.g., TLB 204).For example, the PA address may be obtained from field 402 and theassociated page attributes may be obtained from fields 404-420. The pageattributes shown in fields 404-420 are discussed above in Table 2. Inalternative embodiments, PTE 400 may include more fields, fewer fields,and/or different fields.

FIG. 5 is a flow diagram illustrating selected aspects of a method forlinear to physical address translation with support for page attributesaccording to an embodiment of the invention. Referring to process block502, address translation logic (e.g., address translation logic 200,shown in FIG. 2) receives an instruction (e.g., an LPAxx instruction) totranslate a memory pointer (e.g., a LA) to a PA. The address translationlogic translates the memory pointer to a PA without performing a memoryaccess. Instead, the output parameters are obtained either from TLBentries or from PTEs. Referring to process block 506, the PA and one ormore associated page attributes are returned to the processor (e.g., byplacing the data in a PARR or returning the data via a read return bus).The phrase “without performing a memory access” refers to relying onpage table information to perform the translation. The page tableinformation may be provided by a page table entry (e.g., in the TLB) orfrom memory.

In some embodiments, the LPAxx instruction supports asynchronous callsin addition to synchronous calls. An asynchronous call refers to a callto the LPAxx instruction from an application that does not correspond tothe current CR3 that is being used for translation. In some embodiments,the LPAxx instruction includes additional parameters that tell the pagetree where to start the page table walk (e.g., a CR3 value correspondingto the application that made the asynchronous call). In many cases, thedata in the TLB cannot be used during the asynchronous call since thatdata corresponds to a different program. Thus, in many cases, a pagetable walk is executed to obtain the PA and the one or more associatedpage attributes. In other cases, tags are provided to identify withwhich address space (CR3) a TLB entry is associated. This may enableusage of TLB entrees in asynchronous calls.

Elements of embodiments of the present invention may also be provided asa machine-readable medium for storing the machine-executableinstructions. The machine-readable medium may include, but is notlimited to, flash memory, optical disks, compact disks-read only memory(CD-ROM), digital versatile/video disks (DVD) ROM, random access memory(RAM), erasable programmable read-only memory (EPROM), electricallyerasable programmable read-only memory (EEPROM), magnetic or opticalcards, propagation media or other type of machine-readable mediasuitable for storing electronic instructions. For example, embodimentsof the invention may be downloaded as a computer program which may betransferred from a remote computer (e.g., a server) to a requestingcomputer (e.g., a client) by way of data signals embodied in a carrierwave or other propagation medium via a communication link (e.g., a modemor network connection).

It should be appreciated that reference throughout this specification to“one embodiment” or “an embodiment” means that a particular feature,structure or characteristic described in connection with the embodimentis included in at least one embodiment of the present invention.Therefore, it is emphasized and should be appreciated that two or morereferences to “an embodiment” or “one embodiment” or “an alternativeembodiment” in various portions of this specification are notnecessarily all referring to the same embodiment. Furthermore, theparticular features, structures or characteristics may be combined assuitable in one or more embodiments of the invention.

Similarly, it should be appreciated that in the foregoing description ofembodiments of the invention, various features are sometimes groupedtogether in a single embodiment, figure, or description thereof for thepurpose of streamlining the disclosure aiding in the understanding ofone or more of the various inventive aspects. This method of disclosure,however, is not to be interpreted as reflecting an intention that theclaimed subject matter requires more features than are expressly recitedin each claim. Rather, as the following claims reflect, inventiveaspects lie in less than all features of a single foregoing disclosedembodiment. Thus, the claims following the detailed description arehereby expressly incorporated into this detailed description.

What is claimed is:
 1. A machine-implemented method comprising:receiving an instruction to translate a virtual memory pointer to aphysical memory address for a memory location; translating the virtualmemory pointer to the physical memory address based on page tableinformation; and returning the physical memory address and one or morepage attributes.
 2. The method of claim 1, wherein translating thevirtual memory pointer to the physical memory address based on pagetable information comprises: reading a translation look-aside buffer(TLB) entry to obtain the physical memory address and the one or morepage attributes.
 3. The method of claim 1, wherein translating thevirtual memory pointer to the physical memory address based on pagetable information comprises: if the TLB does not contain the physicalmemory address, then reading at least one page table entry to obtain thephysical memory address and the one or more page attributes.
 4. Themethod of claim 1, wherein the one or more attributes include at leastone of: a present bit, a read/write bit, a user/supervisor bit, anaccess bit, a dirty bit, a global flag, an execute disable bit, a pagesize indicator, and a translation page fault.
 5. The method of claim 1wherein returning the physical memory address and the one or more pageattributes comprises: storing the physical memory address and the one ormore page attributes in a dedicated register; and accessing thededicated register using, at least in part, microcode.
 6. The method ofclaim 1, wherein returning the physical memory address and the one ormore page attributes comprises: returning the physical memory addressand the one or more page attributes via a read return bus.
 7. The methodof claim 1, wherein receiving the instruction to translate the virtualmemory pointer to a physical memory address for a memory locationincludes receiving the instruction from a virtual machine manager; andfurther wherein returning the physical memory address and the one ormore page attributes includes returning a host physical memory address.8. The method of claim 1, wherein receiving the instruction to translatethe virtual memory pointer to a physical memory address for a memorylocation includes receiving the instruction from a guest operatingsystem; and further wherein returning the physical memory address andthe one or more page attributes includes returning a guest physicalmemory address.
 9. The method of claim 1, wherein receiving theinstruction to translate the virtual memory pointer to a physical memoryaddress for a memory location comprises: receiving an asynchronousinstruction to translate the virtual memory pointer to a physical memoryaddress, the instruction including an operand to define a context forthe instruction.
 10. The method of claim 1, wherein translating thevirtual memory pointer to the physical memory address based on pagetable information comprises: determining whether a page corresponding tothe virtual memory pointer is in memory without based on page tableinformation.
 11. A system comprising: a memory device; and a processorand logic executable thereon to receive an instruction to translate avirtual memory pointer to a physical memory address for a memorylocation; translate the virtual memory pointer to the physical memoryaddress based on page table information; and return the physical memoryaddress and one or more page attributes.
 12. The system of claim 11,wherein the logic to translate the virtual memory pointer to thephysical memory address based on page table information comprises: logicto read a translation look-aside buffer (TLB) entry to obtain thephysical memory address and the one or more page attributes.
 13. Thesystem of claim 11, wherein the logic to translate the virtual memorypointer to the physical memory address based on page table informationcomprises: logic to read a page table entry to obtain the physicalmemory address and the one or more page attributes, if the TLB does notcontain the physical memory address.
 14. The system of claim 11, whereinthe one or more attributes include at least one of: a present bit, aread/write bit, a user/supervisor bit, an access bit, a dirty bit, aglobal flag, an execute disable bit, a page size indicator, and atranslation page fault.
 15. The system of claim 11, wherein the logic toreceive the instruction to translate the virtual memory pointer to aphysical memory address for a memory location includes logic to receivethe instruction from a virtual machine manager; and further wherein thelogic to return the physical memory address and the one or more pageattributes includes logic to return a host physical memory address. 16.An article of manufacture comprising: an electronically accessiblemedium providing instructions that, when executed by an apparatus, causethe apparatus to receive an instruction to translate a virtual memorypointer to a physical memory address for a memory location; translatethe virtual memory pointer to the physical memory address based on pagetable information; and return the physical memory address and one ormore page attributes.
 17. The article of manufacture of claim 16,wherein the instructions that, when executed by the apparatus, cause theapparatus to translate the virtual memory pointer to the physical memoryaddress based on page table information cause the apparatus to: read atranslation look-aside buffer (TLB) entry to obtain the physical memoryaddress and the one or more page attributes.
 18. The article ofmanufacture of claim 16, wherein the instructions that, when executed bythe apparatus, cause the apparatus to translate the virtual memorypointer to the physical memory address based on page table informationcause the apparatus to: read a page table entry to obtain the physicalmemory address and the one or more page attributes, if the TLB does notcontain the physical memory address.
 19. The article of manufacture ofclaim 16, wherein the one or more attributes include at least one of: apresent bit, a read/write bit, a user/supervisor bit, an access bit, adirty bit, a global flag, an execute disable bit, a page size indicator,and a translation page fault.
 20. The article of manufacture of claim16, wherein the instructions that, when executed by the apparatus, causethe apparatus to receive the instruction to translate the virtual memorypointer to a physical memory address for a memory location cause theapparatus to receive the instruction from a virtual machine manager; andfurther wherein the instructions that, when executed by the apparatus,cause the apparatus to return the physical memory address and the one ormore page attributes cause the apparatus to return a host physicalmemory address.